报表表头字典 = {'单号': 0, '物料编号': 1, '申请类型': 2, '申请状态': 3, '申请人': 4, '申请BU': 5, '所属工厂': 6,
                '申请时间': 7, '一级分类': 8, '二级分类': 9, '三级分类': 10, '物料短描述': 11, '是否同步SAP': 12,
                '同步时间': 13, '存货类别': 14, '采购类型': 15, '机种代码': 16, '标准价格': 17, '标准价格单位': 18,
                'RPA扩充状态': 19, 'RPA扩充消息': 20, '退回操作人工号': 21, '退回操作人姓名': 22, '退回时间': 23,
                '退回备注': 24, '退回类型': 25}
批量采集结果 = [
    ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V'],
    ['单号', '物料编号', '申请类型', '申请状态', '申请人', '申请BU', '所属工厂', '申请时间', '一级分类', '二级分类',
     '三级分类', '物料短描述', '是否同步SAP', '同步时间', 'RPA消息ID', 'RPA扩充状态', 'RPA扩充消息', '退回操作人工号',
     '退回操作人姓名', '退回时间', '退回备注', '退回类型'],
    ['M2024011000097', '610243634', '新增', '归档', '王欣欣', 'B专案', '1001,1002,1003', '2024-01-10 09:01:01',
     '纸制品包装', '纸张类', '卡纸', 'YT3989薄款盒套纸箱平卡3 102×553MM', '已同步', '2024-01-10 09:18:17', '', '', '',
     '', '', '', '', ''],
    ['M2024011000096', '610243638', '新增', '归档', '王欣欣', 'B专案', '1001,1002,1003', '2024-01-10 09:00:17',
     '纸制品包装', '物流运输类', '', 'YT3989薄款盒套纸箱平卡2 102×395MM', '已同步', '2024-01-10 09:18:12', '', '', '',
     '', '', '', '', ''],
    ['M2024011000059', '610243628', '新增', '归档', '王欣欣', 'B专案', '1001,1002,1003', '2024-01-10 08:50:39',
     '纸制品包装', '物流运输类', '', 'YT3989薄款盒套纸箱567×409×442MM', '已同步', '2024-01-10 09:17:27', '', '', '', '',
     '', '', '', '']]
import numpy as np
import pandas as pd
import datetime as datetime

当前最新一条的时间 = ''


# Log.Info(self, f'元素已经出现')
# Log.Info(self, 批量采集结果)
def toduList(批量采集结果, 当前最新一条的时间):
    当前所选工厂 = '1001'
    当前所属分类 = ''
    扩充数据列表 = []
    del 批量采集结果[0:2]
    # 批量采集结果.pop(0)
    if (批量采集结果[0][0] == ''):
        # Log.Info(self, f'当前报表中数据为空,直接退出流程')
        return

    for item in reversed(批量采集结果):
        print(item)
        if item[报表表头字典['同步时间']] > 当前最新一条的时间:
            # Log.Info(self, item[报表表头字典['同步时间']]+' 大于 '+当前最新一条的时间)
            print(item[报表表头字典['同步时间']] + ' 大于 ' + 当前最新一条的时间)
            当前最新一条的时间 = item[报表表头字典['同步时间']]
        if item[报表表头字典['三级分类']] != '':
            物料列表 = []
            # print('包含三级分类')
            当前所属分类 = item[报表表头字典['三级分类']]
            物料列表.append(item[报表表头字典['物料编号']])
            物料列表.append(当前所选工厂)
            物料列表.append(当前所属分类)
            物料列表.append(item[报表表头字典['存货类别']])
            物料列表.append(item[报表表头字典['物料短描述']])
            物料列表.append(item[报表表头字典['采购类型']])

            扩充数据列表.append(物料列表)
            continue
        if item[报表表头字典['二级分类']] != '':
            物料列表 = []
            # print('包含二级分类')
            当前所属分类 = item[报表表头字典['二级分类']]
            物料列表.append(item[报表表头字典['物料编号']])
            物料列表.append(当前所选工厂)
            物料列表.append(当前所属分类)
            物料列表.append(item[报表表头字典['存货类别']])
            物料列表.append(item[报表表头字典['物料短描述']])
            物料列表.append(item[报表表头字典['采购类型']])
            扩充数据列表.append(物料列表)
            continue
    print(扩充数据列表)


扩充数据列表 = [['910243628', '1001', '物流运输类', '61007', '', '短的描述', 'E'],
                ['610243628', '1001', '烟卡', '10001003', 'A', '短的', 'E'],
                ['610243638', '1001', '物流运输类', '61007', 'C', '', ''],
                ['910243634', '1001', '普通白卡', '10001001', '', '', '']]

扩充excel表头字典 = {"SAP物料编号": 0, "消息类型": 1, "消息内容": 2, "物料类型": 3, "工厂": 4, "库存地点": 5,
                     "旧物料号": 6, "短描述": 7,
                     "长描述": 8, "基本单位": 9, "物料组": 10, "旧品名": 11, "旧规格": 12, "毛重": 13, "净重": 14,
                     "重量单位": 15,
                     "长度": 16, "高度": 17, "宽度": 18, "长度/宽度/高度的尺寸单位": 19, "体积": 20, "体积单位": 21,
                     "品牌": 22,
                     "是否集采": 23, "采购核价参考": 24, "包规数量": 25, "内部客户代码": 26, "内部客户代码(工厂)": 27,
                     "内部项目号": 28,
                     "机种代码": 29, "系列": 30, "外购/自制关联物料号": 31, "经管分类编码": 32, "销售组织": 33,
                     "分销渠道": 34,
                     "项目类别": 35, "交货工厂": 36, "税分类": 37, "物料价格组": 38, "科目设置组": 39, "运输组": 40,
                     "装载组": 41,
                     "销售单位": 42, "换算数量": 43, "基本数量": 44, "采购组": 45, "采购单位": 46, "采购单位（分母）": 47,
                     "基本单位（分母）": 48, "批次管理": 49, "源清单": 50, "采购订单文本": 51, "MRP类型": 52,
                     "计划的时界": 53,
                     "MRP控制者": 54, "MRP组": 55, "批量程序": 56, "最小批量大小": 57, "装配报废(%)": 58, "舍入值": 59,
                     "再订货点": 60,
                     "固定批量大小": 61, "采购类型": 62, "特殊采购类型": 63, "生产仓储地点": 64, "外部采购仓储地点": 65,
                     "反冲": 66,
                     "散装物料": 67, "自制生产(天数)": 68, "采购计划交货时间": 69, "收货处理时间": 70, "安全库存": 71,
                     "计划日历": 72,
                     "计划边际码": 73, "存货类别": 74, "每卡板数量": 75, "卡板标准尺寸": 76, "外箱尺寸": 77,
                     "每箱毛重": 78, "卡板重量": 79,
                     "每箱个数": 80, "策略组": 81, "消耗模式": 82, "向后消耗期间": 83, "向前消耗期间": 84,
                     "可用性检查": 85,
                     "综合MRP标识": 86, "独立/集中": 87, "组件报废(%)": 88, "发货单位": 89, "发货数量": 90,
                     "基本单位数量": 91,
                     "生产管理员": 92, "生产计划参数文件": 93, "过度交货允差": 94, "评估类": 95, "价格控制": 96,
                     "价格确定": 97,
                     "价格单位": 98, "标准价格": 99, "周期单位价格": 100, "含QS成本估算": 101, "物料来源": 102,
                     "利润中心": 103,
                     "成本核算批量": 104, "原始组": 105, "计划价格": 106, "计划价格日期": 107, "采购长文本": 108,
                     '视图扩充结果': 110}

规则excel表头字典 = {"物料编号": 0, "工厂": 1, "分类名称": 2, "BG存货类型": 3, '短的描述': 4, "采购类别": 5,
                     "分类编码": 6, "销售组织": 7,
                     "分销渠道": 8,
                     "项目类别": 9, "交货工厂": 10, "税分类": 11, "科目设置组": 12, "运输组": 13, "装载组": 14,
                     "采购组": 15, "MRP类型": 16, "MRP控制者": 17, "MRP组": 18, "批量程序": 19, "采购类型": 20,
                     "特殊采购类型": 21, "生产仓储地点": 22, "外部采购仓储地点": 23, "反冲": 24, "自制生产(天数)": 25,
                     "采购计划交货时间": 26, "计划边际码": 27, "存货类别": 28, "策略组": 29, "消耗模式": 30,
                     "向后消耗期间": 31, "向前消耗期间": 32, "可用性检查": 33, "独立/集中": 34, "生产计划参数文件": 35,
                     "过度交货允差": 36, "评估类": 37}
#
# import openpyxl
# import xlrd
# workbook = openpyxl.Workbook()
#
# # 获取默认的工作表
# sheet = workbook.active
# sheet =workbook.get_sheet_by_name('导入模板')
# # 写入数据
# sheet['A10'] = '姓名'
# sheet['B10'] = '年龄'
#
# # 添加一行数据
# sheet.append(['Alice', 25])
#
# # 保存工作簿
# workbook.save('../文件/ZMMR001.xls')

列表 = ['', '', '', '']
列表[2] = '数据8'
print(列表)


def expandDateToList(扩充数据列表):
    扩充数据列表 = [['910243628', '1001', '医药保健类', '', '短的描述', 'E'],
                    ['610243628', '1001', '非标加工件', 'A', '短的', 'E'],
                    ['610243638', '1001', '物流运输类', 'C', '', ''],
                    ['910243634', '1001', '普通白卡', '', '', '']]
    当前所选工厂 = '1001'
    视图扩充规则对应表路径 = '../文件/视图扩充规则对应表.xlsx'
    视图扩充表路径 = '../文件/ZMMR001.xls'
    扩充后数据列表 = []
    反馈结果列表 = []
    非标准分类配置文件='../文件/非标准分类编码对应表.xlsx'
    #扩充数据列表中的‘五金标准件’不存在视图扩充规则对应表，它对应的是‘五金配件、电子电器及元器件’
    #‘非标加工件’对应的是‘零配件(非标、标准)、仪器配件’
    readOtherdates=pd.read_excel(非标准分类配置文件,sheet_name='对应表',header=1,dtype=str)
    readOtherdateList=readOtherdates['分类名称'].values.tolist()

    print(readOtherdateList)
    for item in 扩充数据列表:
        if  item[2] in readOtherdateList:
            getresult=readOtherdates[readOtherdates['分类名称'].isin([item[2]])]
            item[2]=getresult[['编码名称']].values.tolist()[0][0]
        # if '非标加工件' in item[2]:
        #     item[2]='零配件(非标、标准)、仪器配件'
        # if '凹凸版/压纹版' in item[2]:
        #     item[2]='凹凸版'

    # 获取所有的shee页签名称，判断是否有包含当前所选工厂的
    excelfile = pd.ExcelFile(视图扩充规则对应表路径)
    sheetname = excelfile.sheet_names
    desired_sheets = [sheet for sheet in sheetname if 当前所选工厂 in sheet]
    print('当前所选sheet页签名称为： {}'.format(desired_sheets[0]))
    # Log.Info(self, '当前所选sheet页签名称为： {}'.format(desired_sheets[0]))
    # 读取Excel的数据
    msg = ''
    try:
        # 读取Excel的数据
        excelDateFrame = pd.read_excel(视图扩充规则对应表路径, sheet_name=desired_sheets[0], header=1, dtype=str)
        # 修改表头，将第一列改为分类编号，将第二列改为分类名称
        excelDateFrame.rename(columns={excelDateFrame.columns[0]: '分类编号', excelDateFrame.columns[1]: '分类名称'},
                              inplace=True)
        # 读取所有的表头，然后判断评估类是否存在
        heardList = excelDateFrame.columns.values.tolist()
        print(heardList)
        if ('评估类' not in heardList):
            msg = '{}工厂没有维护评估类'.format(当前所选工厂)
            Log.Info(self, msg)
            raise Exception(msg)

        # 将‘扩充数据列表’设置为dateframe
        InfoDateFrame = pd.DataFrame(扩充数据列表,
                                     columns=['物料编号', '工厂', '分类名称', 'BG存货类型', '短的描述', '采购类别'])

        # 匹配对应的分类
        features = ['分类名称']
        # 预处理：将括号替换为下划线

        ans = pd.merge(InfoDateFrame, excelDateFrame, how="inner", on=features)
        leftdate = pd.merge(InfoDateFrame, excelDateFrame, how="left", on=features)

    except Exception as ex:
        raise Exception('excel中{}找不到对应的表头或扩充规则;{}'.format(当前所选工厂, msg))
    print(扩充数据列表)
    print(ans)
    print(leftdate)

    ansResult = leftdate[['物料编号', '工厂', '分类名称', '分类编号', 'BG存货类型', '短的描述', '采购类别']]

    扩充数据列表 = ansResult.values.tolist()
    print('匹配分类编号后的扩充数据列表为：{}'.format(扩充数据列表))
    print('列数：{}'.format(ans.shape[0]))
    # Log.Info(self,'列数：{}'.format(ans.shape[0]))
    print(ans['物料编号'].tolist())
    # 判断是否所有的料号都有对应的扩充规则
    if (ans.shape[0] == len(InfoDateFrame)):
        print('列数相同')
        # Log.Info(self,f'列数相同')
    else:
        for item in InfoDateFrame.values.tolist():
            if item[0] in ans['物料编号'].tolist():
                continue
            else:
                errList = []
                errList.append(item[0])
                errList.append('{}失败'.format(item[1]))
                errList.append('{}工厂的物料类型:{},在扩充规则excel中没有此物料类型'.format(item[1], item[2]))
                errList.append(item[4])
                反馈结果列表.append(errList)

    # 打开视图扩充表
    print('匹配后的DateFrame为：{}'.format(ans))
    # Log.Info(self,'匹配后的DateFrame为：{}'.format(ans))
    # 循环每一行数据
    for i in range(0, ans.shape[0]):

        扩充空列表 = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                      '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                      '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                      '',
                      '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                      '',
                      '', '', '', '', '', '', '', '', '', '', '', '', '', '']
        messageList = []
        list = ans.iloc[i].tolist()
        print(list)
        if str(list[7]) == 'nan':
            messageList.append(list[0])  #
            messageList.append('{}失败;'.format(list[1]))
            messageList.append('{}工厂,当前所选分类{},没有对应扩充规则;'.format(list[1], list[2]))
            messageList.append(list[4])
            反馈结果列表.append(messageList)
            continue
        for key, value in 扩充excel表头字典.items():
            扩充空列表[0] = list[0]
            if (key in 规则excel表头字典.keys()):
                # print(key)
                扩充空列表[value] = list[规则excel表头字典[key]]
        #### 获取评估类的值

        # 获取其中的 分类编码 和 BG存货类型，采购类型
        BGType = list[3]
        number = list[4]
        BuyType = list[5]
        if BuyType:
            扩充空列表[扩充excel表头字典['采购类型']] = BuyType
        # BG页面维护了存货类型的根据存货类型来维护评估类,'科目设置组'和'存货类别'也需要跟在改变
        # A:成品     评估类为:7920     '科目设置组':01
        # B:半成品   评估类为:7900     '科目设置组':01
        # C:原辅料   物料编号10开头的(12004017的也是)：3010,非10开头的都为：3030    '科目设置组':02
        if (BGType == 'A'):
            estimate = '7920'
            扩充空列表[扩充excel表头字典['科目设置组']] = '01'
            扩充空列表[扩充excel表头字典['存货类别']] = 'A:成品'
        elif (BGType == 'B'):
            estimate = '7900'
            扩充空列表[扩充excel表头字典['科目设置组']] = '01'
            扩充空列表[扩充excel表头字典['存货类别']] = 'B:半成品'
        elif (BGType == 'C'):
            扩充空列表[扩充excel表头字典['科目设置组']] = '02'
            扩充空列表[扩充excel表头字典['存货类别']] = 'C:原辅料'
            if (str(number).startswith('10') or str(number) == '12004017'):
                estimate = '3010'
            else:
                estimate = '3030'
        else:
            estimate = 扩充空列表[扩充excel表头字典['评估类']]
        扩充空列表[扩充excel表头字典['评估类']] = estimate
        # if (扩充空列表[扩充excel表头字典['物料编码']].startswith('9')):
        #     estimate = '7920'  # 如果物料料号是9开头的（采用特殊规则），评估了改为7920对应的规则
        #     扩充空列表[扩充excel表头字典['评估类']] = estimate
        # else:
        #     estimate = 扩充空列表[扩充excel表头字典['评估类']]
        # estimate = 扩充空列表[扩充excel表头字典['评估类']]
        # 根据评估类得出原始组合成本核算批量(评估类为3010/7900/7920时原始组为OH01,评估类为3030时原始组为OH04)
        if (estimate == '3010') | (estimate == '7900') | (estimate == '7920'):
            扩充空列表[扩充excel表头字典['原始组']] = 'OH01'
            扩充空列表[扩充excel表头字典['成本核算批量']] = '100000'
        elif estimate == '3030':
            扩充空列表[扩充excel表头字典['原始组']] = 'OH04'
            扩充空列表[扩充excel表头字典['成本核算批量']] = '1000'
        # 基础默认配置
        扩充空列表[扩充excel表头字典['价格控制']] = 'S'
        扩充空列表[扩充excel表头字典['价格确定']] = '3'
        扩充空列表[扩充excel表头字典['价格单位']] = '1000'
        扩充空列表[扩充excel表头字典['含QS成本估算']] = 'X'
        扩充空列表[扩充excel表头字典['物料来源']] = 'X'
        factory = 扩充空列表[扩充excel表头字典['工厂']]
        # 根据工厂匹配出对应的利润中心
        工厂对应利润中心文件路径 = '../文件/工厂对应利润中心.xlsx'
        profitCenterDate = pd.read_excel(工厂对应利润中心文件路径, dtype='str')
        profitCenter = profitCenterDate[profitCenterDate['工厂编号'].isin([factory])]
        扩充空列表[扩充excel表头字典['利润中心']] = profitCenter.iloc[0, 1]

        扩充后数据列表.append(扩充空列表)
        print(f'本条物料扩充后结果为{扩充空列表}')
        # 写入到模板中

    print("反馈结果列表")
    print(反馈结果列表)
    print("扩充后数据列表")
    print(扩充后数据列表)
    # for listItem in list:

    # for item in ans.iterrows():
    # print(item.tolist())


expandDateToList(扩充数据列表)

nan = ''
扩充后数据列表 = [
    ['610243628', '', '', '', '1001', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
     '', '', '', '', '', '', '', '', 1001, 10, 'NORM', 1001, 1, '', '02', '0001', '0001', '', '', '', 103, '', '', '',
     '', '', '', 'PD', '', 'A01', 'Z003外购件', 'EX', '', '', '', '', '', 'F', nan, 2004, 1003, 1, '', nan, 5, '', '',
     '', '000', 'C:原辅料', '', '', '', '', '', '', 40, '2', '999', '999', 'Z1', '', 2, '', '', '', '', '', '000001',
     nan, '', '', '', '', '', '', '', '', '', '', '', '', '', ''],
    ['610243638', '', '', '', '1001', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
     '', '', '', '', '', '', '', '', 1001, 10, 'NORM', 1001, 1, '', '02', '0001', '0001', '', '', '', 103, '', '', '',
     '', '', '', 'PD', '', 'A01', 'Z003外购件', 'EX', '', '', '', '', '', 'F', nan, 2004, 1003, 1, '', nan, 5, '', '',
     '', '000', 'C:原辅料', '', '', '', '', '', '', 40, '2', '999', '999', 'Z1', '', 2, '', '', '', '', '', '000001',
     nan, '', '', '', '', '', '', '', '', '', '', '', '', '', '']]

import openpyxl
from openpyxl import load_workbook

本地运行结果文件 = '../文件/运行记录2024-01-16.xlsx'
# 扩充数据列表 = [['610243628', '1001', '物流运输类'], ['610243638', '1001', '物流运输类'],
#                 ['610243634', '1001', '普通白卡']]
扩充后批量采集结果 = []
历史记录时间 = '2024-01-14'
当前最新一条的时间 = '2024-01-10'
当前所选工厂 = '1001'
Message = '扩充异常'
# 扩充后数据列表 = [['610243628', '1001', '物流运输类']]


# factory='1001'
# 工厂对应利润中心文件路径 ='../文件/工厂对应利润中心.xlsx'
# profitCenterDate=pd.read_excel(工厂对应利润中心文件路径,dtype='str')
# profitCenter=profitCenterDate[profitCenterDate['工厂编号'].isin([factory])]
# print(profitCenter.iloc[0,1])
# estimate = '7900'
# # 根据评估类得出原始组合成本核算批量(评估类为3010/7900/7920时原始组为OH01,评估类为3030时原始组为OH04)
# if (estimate == '3010') | (estimate == '7900') | (estimate == '7920'):
#     print("111")
# elif estimate == '3030':
#     print("222")
def expandDateToExcel():
    list = []
    list.append(历史记录时间)
    list.append(当前最新一条的时间)
    list.append(当前所选工厂)
    list.append(str(扩充数据列表))
    list.append(len(扩充数据列表))
    list.append(str(扩充后批量采集结果))
    list.append(len(扩充后批量采集结果))
    if ('成功' in Message):
        list.append('成功')
    else:
        list.append('失败')
    list.append(Message)
    print(list)
    workbook = openpyxl.workbook
    wb = openpyxl.load_workbook(本地运行结果文件)
    # ‘结果记录sheet页中插入list数据’
    sheet = wb['结果记录']
    sheet.append(list)
    print(扩充后数据列表)
    print(扩充数据列表)
    # ‘ZMMR001扩充sheet页中插入’扩充后数据列表'
    sheet1 = wb['ZMMR001扩充']
    for date in 扩充后数据列表:
        time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        date.append(str(time))
        for item in 扩充数据列表:
            if date[0] == item[0]:
                date.append(item[3])
                date.append(item[2])
                date.append(item[4])
                date.append(item[6])
        sheet1.append(date)
    wb.save(本地运行结果文件)
    wb.close()


path = '../文件/运行记录2024-01-16.xlsx'

# str = 'del /a/f/q "' + path + '"'
# print(str)


# toduList(批量采集结果, 当前最新一条的时间)
# expandDateToList(扩充数据列表)
# expandDateToExcel()


#############################价格区间判定
def priceDetermine():
    本地价格区间配置文件路径 = '../文件/价格区间.xlsx'
    元素文本值 = '单面胶'
    列表项 = ['100008116', '250G Algro Design Duo AW双面铜版纸699MM卷 ', '1012', 'KA', '9,891.70', '1,000', 'KG']

    excelDate = pd.read_excel(本地价格区间配置文件路径, dtype='str')
    date = excelDate[excelDate['三级分类名称'].isin([元素文本值.replace('/', '')])]
    dateList = date.iloc[:, 2].tolist()
    print(dateList)
    if (not dateList):
        print('不存在三级分类为: ' + 元素文本值 + '的价格区间')
    elif (str(dateList[0]) == "nan"):
        print(元素文本值 + '--没有配置价格区间')

    range = dateList[0].replace('-', '~').split('~')
    print(range)
    price = float(列表项[4].replace(',', ''))
    number = float(列表项[5].replace(',', ''))
    minPrice = float(range[0])
    maxPrice = float(range[1])
    if (minPrice * number <= price) & (price <= maxPrice * number):
        print(f'价格合理:价格 {price}在价格区间({dateList[0]})*{number}范围内')
    else:
        print(f'价格不合理:价格 {price}不在价格区间({dateList[0]})*{number}范围内')


import openpyxl
from openpyxl import load_workbook


def dateToexcel():
    批量采集结果 = [['100008116', '250G Algro Design Duo AW双面铜版纸699MM卷 ', '1012', 'KA', '9,891.70', '1,000', 'KG',
                     '价格合理:价格 9891.7在价格区间(0.1~21.57)*1000.0范围内'],
                    ['100008160', '300G Algro Design Duo AW双面铜版纸940×692MM', '1012', 'KF', '1,898.45', '1,000',
                     'PCS',
                     '价格合理:价格 1898.45在价格区间(0.1~21.57)*1000.0范围内'],
                    ['100008180', '250G Algro Design Duo AW双面铜版纸699×1080MM', '1012', 'KF', '1,864.66', '1,000',
                     'PCS',
                     '价格合理:价格 1864.66在价格区间(0.1~21.57)*1000.0范围内'],
                    ['100008251', '300G Algro Design Duo AW双面铜版纸940MM卷 ', '1012', 'KA', '9,728.42', '1,000', 'KG',
                     '价格合理:价格 9728.42在价格区间(0.1~21.57)*1000.0范围内'],
                    ['100008569', '250G Algro Design Duo AW双面铜版纸635×514MM', '1012', 'KF', '792.86', '1,000', 'PCS',
                     '价格合理:价格 792.86在价格区间(0.1~21.57)*1000.0范围内'],
                    ['100008613', '250G Algro Design Duo AW双面铜版纸635MM卷 ', '1012', 'KA', '9,710.17', '1,000', 'KG',
                     '价格合理:价格 9710.17在价格区间(0.1~21.57)*1000.0范围内'],
                    ['110001434', '三上27u BOPP预涂耐磨哑膜630MM×2000M', '1012', 'KA', '3,034.19', '1,000', 'M2',
                     '价格合理:价格 3034.19在价格区间(0.3~30.76)*1000.0范围内'],
                    ['110001488', '三上27u BOPP预涂耐磨哑膜680MM×2000M', '1012', 'KA', '3,034.19', '1,000', 'M2',
                     '价格合理:价格 3034.19在价格区间(0.3~30.76)*1000.0范围内'],
                    ['110001557', '三上27u BOPP预涂耐磨哑膜690MM×2000M', '1012', 'KA', '3,034.19', '1,000', 'M2',
                     '价格合理:价格 3034.19在价格区间(0.3~30.76)*1000.0范围内'],
                    ['110002212', '东洋TK THK ASP黑色普通胶印油墨1KG/罐 ', '1012', 'KA', '32,207.00', '1,000', 'KG',
                     '价格合理:价格 32207.0在价格区间(26.92~225.7)*1000.0范围内'],
                    ['120001376', '3M 9988EG双面胶7MM×150M(+0.2/-0.2)', '1012', 'KA', '23,287.26', '1,000', '卷 ',
                     '不存在三级分类为: 单双面胶的价格区间'],
                    ['510002069', '602-02317-A Y52492M盒套印刷', '1012', 'KF', '34,665.16', '100,000', 'PCS'],
                    ['510002072', '602-02091-A Y12464M盒套印刷', '1012', 'KF', '27,039.45', '100,000', 'PCS'],
                    ['510002073', '602-02317-A Y52492M盒套成型', '1012', 'KF', '46,788.77', '100,000', 'PCS'],
                    ['510002074', '602-02089-A Y12463M盒套印刷', '1012', 'KF', '23,729.36', '100,000', 'PCS']]

    价格区间判定结果文件 = '../文件/价格区间判定结果.xlsx'
    exceldate = pd.read_excel(价格区间判定结果文件, sheet_name='价格区间判定结果', dtype='str')
    rowNumber = exceldate.shape[0] + 1
    wb = openpyxl.load_workbook(价格区间判定结果文件)
    sheet = wb['价格区间判定结果']
    start_row = rowNumber + 1
    for item in 批量采集结果:
        for col in range(1, len(item) + 1):
            sheet.cell(row=start_row, column=col).value = item[col - 1]
        start_row += 1

    wb.save(价格区间判定结果文件)


# priceDetermine()
# dateToexcel()
扩充空列表 = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
              '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
              '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
              '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
              '', '', '', '', '', '', '', '', '', '', '', '', '', '']
print(len(扩充空列表))


########################################
##############零星标准成本的###############
########################################

def readdate():
    下载文件列表 = ['../文件/零星标准成本发布模板1.xls', '../文件/零星标准成本发布模板2.xls']
    本地运行文件 = '../文件/零星标准成本发布模板.xls'
    readexcel = pd.read_excel(本地运行文件, sheet_name='导入模板', header=2, dtype=str)
    readexcelCol = readexcel.columns.tolist()
    readexcel = readexcel[~readexcel['SAP物料编码'].isin(['必填'])]
    # print(readexcel)
    allfileList = []
    for item in 下载文件列表:
        fileDate = pd.read_excel(item, sheet_name='导入模板', header=2, dtype=str)
        fileDate = fileDate[~fileDate['SAP物料编码'].isin(['必填'])]
        allfileList.append(fileDate)
    if (len(下载文件列表) > 1):
        # 拼接下载的数据，并去除重复的，只保留其中一条
        concatDate = pd.concat(allfileList, axis=0)
        # concatDate = concatDate.drop_duplicates(keep='first')
        # 然而，更通用的做法是先重置索引，然后添加一个辅助列来记录原始顺序
        concatDate['original_order'] = range(len(concatDate))  # 添加一个辅助列来记录原始顺序
        df_sorted = concatDate.sort_values(by=['SAP物料编码', 'original_order'], ascending=[True, False])

        # 然后，使用 drop_duplicates 保留每组中的第一条数据（现在是排序后的最后一条数据）
        df_unique = df_sorted.drop_duplicates(subset='SAP物料编码').reset_index(drop=True)
        # 最后，删除辅助列（如果需要的话）
        concatDate = df_unique.drop(columns=['original_order'])
    else:
        fileDate = pd.read_excel(下载文件列表[0], sheet_name='导入模板', header=2, dtype=str)
        fileDate = fileDate[~fileDate['SAP物料编码'].isin(['必填'])]
        concatDate = fileDate
    # 拼接原来的表，将所有重复的都去除，只保留不重复的
    # 使用merge函数，通过indicator参数标记每一行的合并状态
    # left_only表示只存在于df1中的行

    if len(concatDate) == 0:
        收取文件内容列表=[]
    else:
        readexcel = readexcel[['SAP物料编码', '工厂','视图扩充结果']]
        merged = pd.merge(concatDate, readexcel, left_on=['SAP物料编码', '工厂','视图扩充结果'], right_on=['SAP物料编码', '工厂','视图扩充结果'],
                          how='left', indicator=True)
        # 筛选出在df1中但不在df2中的行
        result = merged[merged['_merge'] == 'left_only'].drop(columns=['_merge'])
        print(result)
        收取文件内容列表 = result.values.tolist()
    print(收取文件内容列表)


readdate()
import pandas as pd


# 业务视图扩充筛选失败数据子流程
def readerr():
    readexcel = pd.read_excel(文件列表项, header=None, dtype=str)
    失败数据表格
    下载文件列表 = ['']
    pd.merge(数据表格, 失败数据表格)
    import pandas as pd
    筛选结果 = pd.merge(数据表格, 失败数据表格, left_on=['SAP物料编码', '工厂'], right_on=['SAP物料编码', '工厂'],
                        how='left', indicator=True)
    筛选结果列表 = 筛选结果.values.tolist()
    筛选结果.to_excel(筛选结果)
